package cn.com.anypay.manager.service.auth.model;

import cn.com.anypay.manager.miaoma.sysuser.SysUserEntity;
import lombok.Data;

import java.util.Map;

/**
 * 认证结果模型
 * 封装认证的结果信息
 */
@Data
public class AuthResult {

    /**
     * 认证是否成功
     */
    private boolean success;

    /**
     * 错误信息（认证失败时）
     */
    private String errorMessage;

    /**
     * 用户信息（认证成功时）
     */
    private SysUserEntity user;

    /**
     * 附加数据（如token、权限等）
     */
    private Map<String, Object> data;

    /**
     * 私有构造函数，防止直接实例化
     */
    private AuthResult() {}

    /**
     * 创建成功的认证结果
     *
     * @param user 用户信息
     * @param data 附加数据
     * @return 认证结果
     */
    public static AuthResult success(SysUserEntity user, Map<String, Object> data) {
        AuthResult result = new AuthResult();
        result.success = true;
        result.user = user;
        result.data = data;
        return result;
    }

    /**
     * 创建成功的认证结果（无附加数据）
     *
     * @param user 用户信息
     * @return 认证结果
     */
    public static AuthResult success(SysUserEntity user) {
        return success(user, null);
    }

    /**
     * 创建失败的认证结果
     *
     * @param errorMessage 错误信息
     * @return 认证结果
     */
    public static AuthResult failure(String errorMessage) {
        AuthResult result = new AuthResult();
        result.success = false;
        result.errorMessage = errorMessage;
        return result;
    }
}